home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
91xx
/
9112a.d64
/
listing 3
< prev
next >
Wrap
Text File
|
1995-03-30
|
2KB
|
108 lines
Listing 3:
sei
ldx #$00 ;Erstellen
:maktabtxa ;einer
clc ;Funktionstabelle
adc #$01 ;für
and #$07 ;die
ora #$38 ;Speicherstellen
sta tb11,x ;$d011 und
txa ;$d018
adc #$01
asl
asl
asl
asl
ora #$08
and #$7f
sta tb18,x
inx
cpx #200 ;200 Rasterzeilen ?
bne maktab
lda #$70 ;letzte Zeile kein DMA
sta tb11+199 ;und Restzeilen schwarz
lda #$08
sta tb18+199
lda #<neuirq ;IRQ-Vektor
ldx #>neuirq ;verbiegen
sta $0314
stx $0315
lda #$1b
sta $d011 ;$d011-init
lda #$18
sta $d016 ;MC-ein
lda #$00
sta $d015 ;Sprite-Register löschen
sta $d020
sta $d021
sta $dc0e ;Timer-Stop
lda #$4c ;neuen Timerwert für den
sta $dc05 ;ersten IRQ setzen
lda #$c7-63
sta $dc04
:wait1lda $d011 ;auf Zeile $030 warten
bpl wait1
:wait2lda $d011
bmi wait2
lda #$30
:wait3cmp $d012
bne wait3
ldx #$11 ;Synchronisation des
lda #$18 ;Timers auf immer dieselbe
sta $d011 ;horizontale Position durch
stx $dc0e ;DMA-Zyklen-Ausgleich
lda #$3b
sta $d011
lda $dc0d ;IRQ-Flag löschen
lda $dd00 and #$fc
ora #$02
sta $dd00 ;Bank 1 ein
cli
rts
:neuirqlda #$9f ;Maximalwert der vergangenen
sec ;Zyklen vergleichen
sbc $dc04
cmp #$0b
bcc ok
jmp syncerr;zuviele Zyklen
:oklsr;halbieren
bcc onecycle
sta restcycle+1
:restcyclebpl restcycle ;Zeitausgleich durch
nop ;Anzahl der NOPs
nop
nop
nop
nop
nop
lda #$30 ;Hires display
sta $d011 ;und 1. DMA in Zeile $030
nop;6 Zyklen warten
nop
nop
ldx #$00 ;Erzeugung
lda tb18,x ;von
sta $d018 ;200 DMA-Zeilen
lda tb11,x
sta $d011
inx
cpx #200
bne hamloop
:backjmp $ea31 ;alte IRQ-Routine
:syncerrlda #$4c ;Timer auf exact
sta $dc05;einen Bildschirm-
lda #$c7 ;durchlauf einstellen
sta $dc04
jmp back